package com.example.app2024.service;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

import com.example.app2024.R;

public class ServiceDemoActivity extends AppCompatActivity
{
      @Override
      protected void onCreate(Bundle savedInstanceState)
      {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.service_activity_main);
      }

      //IBinder
      //ServicerConnection:用于绑定客户端和Service
      //进度监控
      private ServiceConnection conn = new ServiceConnection()
      {
            //当客户端正常连接着服务时，执行服务的绑定操作会被调用
            @Override
            public void onServiceConnected(ComponentName componentName, IBinder iBinder)
            {
                  Log.e("TAG", "慕课");

                  MyService.MyBinder mb = (MyService.MyBinder) iBinder;  //将这个对象扔出去,由主activity 里的异步任务来监听是不是更好呢?
                  int step = mb.getProcess();
                  Log.e("TAG", "当前进度是：" + step);
            }

            //当客户端和服务的连接丢失了
            @Override
            public void onServiceDisconnected(ComponentName componentName)
            {

            }
      };


      public void operate(View v)
      {
            if (v.getId() == R.id.start)
            {
                  //启动服务:创建-->启动-->销毁
                  //如果服务已经创建了，后续重复启动，操作的都是同一个服务，不会再重新创建了，除非你先销毁它
                  Intent it1 = new Intent(this, MyService.class);
                  startService(it1);
                  Toast.makeText(this, "开始服务", Toast.LENGTH_SHORT).show();

            }
            else if (v.getId() == R.id.stop)
            {
                  Intent it2 = new Intent(this, MyService.class);
                  stopService(it2);
                  Toast.makeText(this, "停止始服务", Toast.LENGTH_SHORT).show();

            }
            else if (v.getId() == R.id.bind)
            {
                  //绑定服务：最大的 作用是用来实现对Service执行的任务进行进度监控
                  //如果服务不存在： onCreate-->onBind-->onUnbind-->onDestory
                  // （此时服务没有再后台运行，并且它会随着Activity的摧毁而解绑并销毁）
                  //服务已经存在：那么bindService方法只能使onBind方法被调用，而unbindService方法只能使onUnbind被调用
                  Intent it3 = new Intent(this, MyService.class);
                  bindService(it3, conn, BIND_AUTO_CREATE);
                  Toast.makeText(this, "绑定服务", Toast.LENGTH_SHORT).show();

            }
            else if (v.getId() == R.id.unbind)
            {
                  //解绑服务
                  unbindService(conn);
                  Toast.makeText(this, "解绑服务", Toast.LENGTH_SHORT).show();
            }
      }
}